package com.todoclipse.dao;

import java.util.Collection;
import java.util.List;
import java.util.Set;

import com.todoclipse.api.Item;
import com.todoclipse.api.ProjectItem;
import com.todoclipse.dao.ItemDaoImpl.Query;

public interface ItemDao {

	public abstract List<ProjectItem> getAllProjects();
	
	public abstract ProjectItem getProject(long id);

	public abstract Set<String> getAllLabels();

	public abstract boolean addProject(ProjectItem p);

	public abstract boolean updateProject(ProjectItem p);

	public abstract boolean deleteProject(ProjectItem p);

	public abstract List<Item> getUncompletedItems(ProjectItem p);

	public abstract List<Item> getCompletedItems(ProjectItem p);

	public abstract Item addItemToAProject(ProjectItem p);

	public abstract Item updateItem(Item t);

	public abstract boolean deleteItem(Item t);

	public abstract void moveItemsToTheHistory(Collection<Item> tasks);

	public abstract List<Item> getItemsById(Collection<Long> ids);

	public abstract void execute(Query q);

}